package com.cheng.io.decorator;

/**
 * 装饰器模式的主要作用：解决在松耦合的前提下，对功能扩展防止class boom。
 * 装饰器模式中的角色：抽象被装饰者、被装饰者、装饰者、抽象装饰者。
 * 装饰者与被装饰者需要实现同一个接口、继承同一个抽象类，这样对于程序来说使用装饰者就和使用被装饰者一样
 */
public class TestMain {
    public static void main(String[] args) {
        Closeable closeable = new CloseableTimeDecorator(new CustomInputStream());
        Closeable closeable1 = new CloseableLogDecorator(new CustomOutputStream());

        closeable.close();
        closeable1.close();
    }
}
